In present high definition television (HDTV) and satellite broadcast systems, programs comprise combinations of a video signal representing a moving image, one or more audio signals (for stereo or multi-language capability), and one or more data signals (for closed captioning, and/or interactive computer program code and/or data). As a specific example, a system proposed by the Grand Alliance consortium in the United States provides for a program to contain a video signal component, two audio signal components and four auxiliary data signal components. A stream of successive packets of data is formed, each packet containing data from one of the component signals. In this manner the seven component signals are time multiplexed into a single packet stream, which is broadcast over a transport link.
Remote locations receive and process the data contained in the packet stream to reproduce the seven component signals. The image represented by the video signal component is displayed on a display screen, and the sound represented by the audio signal component(s) is reproduced by speakers. The auxiliary data component signals are processed by appropriate circuitry at the remote location, and used as intended. For example, if one of the auxiliary data component signals represents closed captioning information, a video signal representing the closed caption image is generated, and that image signal is combined with the image signal representing the video signal component. The image represented by the combined image signals is displayed on the display screen.
The device used to combine the seven component signals is called a transport stream encoder. A working draft published by the International Organization for Standardization, ISO/IEC JTC1/SC29/WG11, Coding of Moving Pictures and Associated Audio, entitled "MPEG-2 Systems Working Draft," (ISO/IEC/JTC1/SC29/WG11/N0531) in September 1993, illustrates a block diagram of a transport stream encoder. This block diagram includes an input FIFO and data selector for temporarily buffering data representing the seven digital data signal components and producing data representing a selected one of the seven signal components. This data is supplied to a packetizer. A scheduler selects which of the signal components is to be carried in the next packet slot using either a priority scheme or a fixed time slot scheme, both of which are described in more detail below. To form a packet containing data from a selected signal component, the scheduler conditions the data selector to couple the output terminal of the input FIFO for the selected signal component to the packetizer, and conditions that input FIFO to produce the data to be carried in that packet. The resulting packet is transmitted over the transport link.
In the known priority scheme, a list of the component signals is maintained in order from a highest priority component signal to a lowest. Each time a packet is prepared, the FIFOs of the component signals are tested in order from the highest to the lowest priority component signal. The first FIFO tested which has sufficient data to form a packet is selected to form the next packet. If none of the FIFOs contain enough data, a null packet is inserted. This is the scheme used in the system illustrated by the Grand Alliance Consortium, described above.
A problem with the priority scheme is it requires low data rate component signals be assigned higher priorities than higher data rate component signals. This is because higher data rate signal components (e.g. video signal components) will accumulate enough data in its FIFO to form a packet more rapidly than lower data rate signal components (e.g. audio signal components), and if they were given a higher priority, no lower data rate component signal would be allowed to form a packet. Furthermore, in the case where more than one program is being transported, more than one set of high data rate and low data rate component signals are being transported. For example, there may be two audio signals per program from more than one program. While all of the audio signals are approximately the same data rate, and equally important, one must be given a priority over the others. Finally, the priority scheme can lead to unnecessary null packets.
In the known fixed time slot scheme, the packet stream is partitioned into successive groups of packet slots. Each component signal is assigned to one or more predetermined packet slots within this group. Whenever a packet slot assigned to a particular component signal is due to be formed, that component signal's FIFO is checked to determine if it contains enough data to form a packet. If it does, a packet is formed containing that data. If it does not, a null packet is inserted into the packet stream.
A problem with the fixed time slot scheme is that component signals are assigned to only specific packet slots within any group of packet slots. At worst, a component signal may be assigned only one packet slot within the group (although a component signal can be assigned more than one packet slot). If that component's FIFO does not have enough data to form a packet when its packet slot occurs, a null packet is inserted into the packet stream and the component signal must wait until the next group, even though it may have had enough data at the very next packet slot. A solution to this problem is to use very small packets, but this increases the overhead in the packet stream, thus, decreasing the overall data rate available to the component signals. Furthermore, a null packet is inserted into the packet stream, even though some other component signal may have sufficient data in its FIFO to form a packet.
Both of the above schemes lack sufficient flexibility to allow effective throughput control while maximizing channel efficiency by minimizing null packets.